//请求获取医院列表的参数接口
export interface ReqGetHospitalListParams {
  page: number;
  limit: number;
  hoscode?: string; //医院编号
  hosname?: string; //医院的名称
  hostype?: string; //医院的类型
  provinceCode?: string; //省份信息
  cityCode?: string; //市的信息
  districtCode?: string; //区域的信息
}

//公共结构
export interface HospitalType {
  id: string; //医院 id
  createTime: string; //创建时间
  updateTime: string; //更新时间
  isDeleted: number; //是否删除
  param: {
    hostypeString: string; //医院的类型字符串
    fullAddress: string; //医院的具体位置
  };
  hoscode: string; //医院的编号
  hosname: string; //医院的名称
  hostype: string; //医院的类型编号
  provinceCode: string; //省
  cityCode: string; //市
  districtCode: string; //县区
  address: string; //基本地址
  logoData: string; //logo 数据
  intro: string; // 医院的介绍
  route: string; //医院的乘车路线
  status: 0 | 1; //医院的状态
}

//单个医院结构
export interface HospitalItem extends HospitalType {
  bookingRule: BookingRule;
}

//预约规则接口
export interface BookingRule {
  //预约规则
  cycle: number; //预约周期
  releaseTime: string; //放号时间
  stopTime: string; //结束时间
  quitDay: number; //退号
  quitTime: string; //退号时间
  rule: string[]; //预约的细则
}

//单个医院显示的结构
export interface HospitalShow {
  bookingRule: BookingRule;
  hospital: HospitalType;
}

//声明医院结构的数组类型
export type HospitalItems = HospitalItem[];

//医院列表响应结构  {data: message:  code:}
export interface ReqHospitalListResponse {
  content: HospitalItems;
  totalElements: number; //医院总的数量
  totalPages: number; //总的页数
  last: boolean; // 是否为最后一页
  first: boolean; // 是否为第一页
  sort: {
    //与排序相关的结构
    sorted: boolean;
    unsorted: boolean;
    empty: boolean;
  };
  numberOfElements: number; //当前返回医院数据数量
  size: number; //
  number: number; //
  empty: boolean; //是否为空
}

//声明单个省份信息结构
export interface ProvinceItem {
  id: number; //信息 ID
  createTime: string; //创建时间
  updateTime: string; //更新时间
  isDeleted: number; //是否删除
  parentId: number; //父级 id
  name: string; // 名字
  value: string; //编号
  dictCode: null; //词典编号
  hasChildren: boolean; ///是否有子元素
}

export type ProvinceItems = ProvinceItem[];

//声明科室的接口
export interface Department {
  depcode: string;
  depname: string;
  children: null | Departments;
}

export type Departments = Department[];

//声明获取排班规则的参数
export interface ReqGetScheduleRuleParams {
  page: number;
  limit: number;
  hoscode: string;
  depcode: string;
}

//某一天的排班数据
export interface ScheduleRule {
  workDate: string; // 排班日期
  workDateMd: null; //
  dayOfWeek: string; //星期
  docCount: number; //医生的数量
  reservedNumber: number; // 总的预约号数
  availableNumber: number; //  可用的预约号数
  status: null; //状态
}

export type ScheduleRules = ScheduleRule[];

//声明排班规则响应的结构
export interface ReqGetScheduleRuleResponse {
  total: number;
  bookingScheduleList: ScheduleRules;
  baseMap: {
    hosname: string;
  };
}

//获取排班的参数结构
export interface ReqGetHospitaScheduleParams{
  hoscode: string;
  depcode: string;
  workDate: string;
}

//某一天排班的单条信息
export interface HospitalScheduleItem {
  id: string; // ID
  createTime: string; //创建时间
  updateTime: string; // 更新时间 
  isDeleted: number;//是否删除
  param: { //额外信息
    dayOfWeek: string;
    depname: string;
    hosname: string;
  };
  hoscode: string;//医院编号
  depcode: string;//部门编号
  title: string;//职称
  docname: string; //医生的名字
  skill: string; //擅长技术
  workDate: string; //工作日期
  workTime: number; //上班时间
  reservedNumber: number; // 总的预约数
  availableNumber: number; //可用的预约数
  amount: number; // 价格
  status: number; //状态
  hosScheduleId: string; //id
}

//复数
export type HospitalScheduleResponse = HospitalScheduleItem[];


